crypto
概要
crypto
モジュールは、純粋な Lua で実装されたハッシュ、暗号化、復号化などの暗号化プリミティブのセットを提供します。データをハッシュ、暗号化、復号化するためのいくつかの機能を提供し、安全な通信とデータストレージの開発を簡素化します。このドキュメントでは、モジュールの機能、インストール、および使用方法について説明します。
Usage
local crypto = require(".crypto");
プリミティブ
- ダイジェスト (sha1, sha2, sha3, keccak, blake2b など)
- サイファー (AES, ISSAC, Morus, NORX など)
- ランダム数生成器 (ISAAC)
- MAC (HMAC)
- KDF (PBKDF2)
- ユーティリティ (Array, Stream, Queue など)
ダイジェスト
MD2
与えられたメッセージの MD2 ダイジェストを計算します。
パラメータ:
stream
(Stream): ストリーム形式のメッセージ
戻り値: 異なる形式でダイジェストを取得するための関数を含むテーブル。
asBytes()
: バイトテーブル形式のダイジェスト。asHex()
: 16進形式の文字列としてのダイジェスト。asString()
: 文字列形式のダイジェスト。
Example:
local str = crypto.utils.stream.fromString("ao")
return crypto.digest.md2(str).asHex() -- 0d4e80edd07bee6c7965b21b25a9b1ea
MD4
与えられたメッセージの MD4 ダイジェストを計算します。
パラメータ:
stream
(Stream): ストリーム形式のメッセージ
戻り値: 異なる形式でダイジェストを取得するための関数を含むテーブル。
asBytes()
: バイトテーブル形式のダイジェスト。asHex()
: 16進形式の文字列としてのダイジェスト。asString()
: 文字列形式のダイジェスト。
Example:
local str = crypto.utils.stream.fromString("ao")
return crypto.digest.md4(str).asHex() -- e068dfe3d8cb95311b58be566db66954
MD5
与えられたメッセージの MD5 ダイジェストを計算します。
パラメータ:
stream
(Stream): ストリーム形式のメッセージ
戻り値: 異なる形式でダイジェストを取得するための関数を含むテーブル。
asBytes()
: バイトテーブル形式のダイジェスト。asHex()
: 16進形式の文字列としてのダイジェスト。asString()
: 文字列形式のダイジェスト。
Example:
local str = crypto.utils.stream.fromString("ao")
return crypto.digest.md5(str).asHex() -- adac5e63f80f8629e9573527b25891d3
SHA1
与えられたメッセージの SHA1 ダイジェストを計算します。
パラメータ:
stream
(Stream): ストリーム形式のメッセージ
戻り値: 異なる形式でダイジェストを取得するための関数を含むテーブル。
asBytes()
: バイトテーブル形式のダイジェスト。asHex()
: 16進形式の文字列としてのダイジェスト。asString()
: 文字列形式のダイジェスト。
Example:
local str = crypto.utils.stream.fromString("ao")
return crypto.digest.sha1(str).asHex() -- c29dd6c83b67a1d6d3b28588a1f068b68689aa1d
SHA2_256
与えられたメッセージの SHA2-256 ダイジェストを計算します。
- パラメータ:
stream
(Stream): ストリーム形式のメッセージ
- 戻り値: 異なる形式でダイジェストを取得するための関数を含むテーブル。
asBytes()
: バイトテーブル形式のダイジェスト。asHex()
: 16進形式の文字列としてのダイジェスト。asString()
: 文字列形式のダイジェスト。
Example:
local str = crypto.utils.stream.fromString("ao")
return crypto.digest.sha2_256(str).asHex() -- ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
SHA2_512
与えられたメッセージの SHA2-512 ダイジェストを計算します。
- パラメータ:
msg
(string): ダイジェストを計算するメッセージ
- 戻り値: 異なる形式でダイジェストを取得するための関数を含むテーブル。
asBytes()
: バイトテーブル形式のダイジェスト。asHex()
: 16進形式の文字列としてのダイジェスト。asString()
: 文字列形式のダイジェスト。
Example:
local str = "ao"
return crypto.digest.sha2_512(str).asHex() -- 6f36a696b17ce5a71efa700e8a7e47994f3e134a5e5f387b3e7c2c912abe94f94ee823f9b9dcae59af99e2e34c8b4fb0bd592260c6720ee49e5deaac2065c4b1
SHA3
以下の関数が含まれています。
sha3_256
sha3_512
keccak256
keccak512
各関数は、与えられたメッセージのそれぞれのダイジェストを計算します。
パラメータ:
msg
(string): ダイジェストを計算するメッセージ
戻り値: 異なる形式でダイジェストを取得するための関数を含むテーブル。
asBytes()
: バイトテーブル形式のダイジェスト。asHex()
: 16進形式の文字列としてのダイジェスト。asString()
: 文字列形式のダイジェスト。
Example:
local str = "ao"
crypto.digest.sha3_256(str).asHex() -- 1bbe785577db997a394d5b4555eec9159cb51f235aec07514872d2d436c6e985
crypto.digest.sha3_512(str).asHex() -- 0c29f053400cb1764ce2ec555f598f497e6fcd1d304ce0125faa03bb724f63f213538f41103072ff62ddee701b52c73e621ed4d2254a3e5e9a803d83435b704d
crypto.digest.keccak256(str).asHex() -- 76da52eec05b749b99d6e62bb52333c1569fe75284e6c82f3de12a4618be00d6
crypto.digest.keccak512(str).asHex() -- 046fbfad009a12cef9ff00c2aac361d004347b2991c1fa80fba5582251b8e0be8def0283f45f020d4b04ff03ead9f6e7c43cc3920810c05b33b4873b99affdea
Blake2b
与えられたメッセージのBlake2bダイジェストを計算します。
パラメータ:
data
(string): ハッシュ化するデータ。outlen
(number): 出力ハッシュの長さ(オプション) デフォルトは64。key
(string): ハッシュ化に使用するキー(オプション) デフォルトは""。
戻り値: 異なる形式でダイジェストを取得するための関数を含むテーブル。
asBytes()
: バイトテーブル形式のダイジェスト。asHex()
: 16進形式の文字列としてのダイジェスト。asString()
: 文字列形式のダイジェスト。
Example:
local str = "ao"
crypto.digest.blake2b(str).asHex() -- 576701fd79a126f2c414ef94adf1117c88943700f312679d018c29c378b2c807a3412b4e8d51e191c48fb5f5f54bf1bca29a714dda166797b3baf9ead862ae1d
crypto.digest.blake2b(str, 32).asHex() -- 7050811afc947ba7190bb3c0a7b79b4fba304a0de61d529c8a35bdcbbb5544f4
crypto.digest.blake2b(str, 32, "secret_key").asHex() -- 203c101980fdf6cf24d78879f2e3db86d73d91f7d60960b642022cd6f87408f8
Ciphers
AES
高度暗号化標準(AES)は、機密情報を暗号化するために使用される対称ブロック暗号です。暗号化と復号化の2つの機能があります。
Encrypt
AESアルゴリズムを使用して、与えられたメッセージを暗号化します。
パラメータ:
data
(string): 暗号化するデータ。key
(string): 暗号化に使用するキー。iv
(string) オプション: 暗号化に使用する初期化ベクトル。 デフォルトは""mode
(string) オプション: 暗号化に使用する操作モード。 デフォルトは"CBC"。 使用可能なモードはCBC
,ECB
,CFB
,OFB
,CTR
です。keyLength
(number) オプション: 暗号化に使用するキーの長さ。 デフォルトは128。
戻り値: 異なる形式で暗号化されたデータを取得するための関数を含むテーブル。
asBytes()
: バイトテーブル形式の暗号化データ。asHex()
: 16進形式の文字列としての暗号化データ。asString()
: 文字列形式の暗号化データ。
Decrypt
AESアルゴリズムを使用して、与えられたメッセージを復号化します。
パラメータ:
cipher
(string): ヘックスエンコードされた暗号化データ。key
(string): 復号化に使用するキー。iv
(string) オプション: 復号化に使用する初期化ベクトル。 デフォルトは""mode
(string) オプション: 復号化に使用する操作モード。 デフォルトは"CBC"。 使用可能なモードはCBC
,ECB
,CFB
,OFB
,CTR
です。keyLength
(number) オプション: 復号化に使用するキーの長さ。 デフォルトは128。
戻り値: 異なる形式で復号化されたデータを取得するための関数を含むテーブル。
asBytes()
: バイトテーブル形式の復号化データ。asHex()
: 16進形式の文字列としての復号化データ。asString()
: 文字列形式の復号化データ。
Example:
local str = "ao"
local iv = "super_secret_shh"
local key_128 = "super_secret_shh"
local encrypted = crypto.cipher.aes.encrypt("ao", key, iv).asHex() -- A3B9E6E1FBD9D46930E5F76807C84B8E
local decrypted = crypto.cipher.aes.decrypt(encrypted, key, iv).asHex() -- 616F0000000000000000000000000000
crypto.utils.hex.hexToString(decrypted) -- ao
ISSAC Cipher
ISAACは、暗号的に安全な擬似乱数生成器(CSPRNG)であり、ストリーム暗号です。以下の機能があります。
seedIsaac
: 指定されたシードでISAAC暗号をシードします。getRandomChar
: ISAAC暗号を使用してランダムな文字を生成します。random
: ISAAC暗号を使用して指定された範囲内のランダムな数値を生成します。getRandom
: ISAAC暗号を使用してランダムな数値を生成します。encrypt
: ISAAC暗号を使用して与えられたメッセージを暗号化します。decrypt
: ISAAC暗号を使用して与えられたメッセージを復号化します。
Encrypt
ISAAC暗号を使用して、与えられたメッセージを暗号化します。
- パラメータ:
msg
(string): 暗号化するメッセージ。key
(string): 暗号化に使用するキー。
- 戻り値: 異なる形式で暗号化されたデータを取得するための関数を含むテーブル。
asBytes()
: バイトテーブル形式の暗号化データ。asHex()
: 16進形式の文字列としての暗号化データ。asString()
: 文字列形式の暗号化データ。
Decrypt
ISAAC暗号を使用して、与えられたメッセージを復号化します。
- パラメータ:
cipher
(string): ヘックスエンコードされた暗号化データ。key
(string): 復号化に使用するキー。
- 戻り値: 異なる形式で復号化されたデータを取得するための関数を含むテーブル。
asBytes()
: バイトテーブル形式の復号化データ。asHex()
: 16進形式の文字列としての復号化データ。asString()
: 文字列形式の復号化データ。
Example:
local message = "ao";
local key = "secret_key";
local encrypted = crypto.cipher.issac.encrypt(message, key)
local decrypted = crypto.cipher.issac.decrypt(encrypted.asString(), key) -- ao
encrypted.asHex() -- 7851
random
ISAAC暗号を使用して、ランダムな数値を生成します。
- パラメータ:
min
(number) optional: ランダム数値の最小値。デフォルトは0。max
(number) optional: ランダム数値の最大値。デフォルトは2^31 - 1。seed
(string) optional: ランダム数値を生成するために使用されるシード。デフォルトはmath.random(0,2^32 - 1)。
- 戻り値: 指定された範囲内のランダムな数値。
Example:
crypto.cipher.issac.random(0, 100) -- 42
Morus Cipher
MORUSは、高性能の認証暗号化アルゴリズムで、CAESARコンペティションに提出され、最近ファイナリストとして選ばれました。
Encrypt
与えられたメッセージをMORUS暗号を使用して暗号化します。
- パラメータ:
key
(string): 暗号化キー(16または32バイトの文字列)。iv
(string): ノンスまたは初期値(16バイトの文字列)。msg
(string): 暗号化するメッセージ(可変長の文字列)。ad
(string) optional: 追加データ(可変長の文字列)。デフォルトは""。
- 戻り値: 異なる形式で暗号化されたデータを取得するための関数を含むテーブル。
asBytes()
: 暗号化されたデータをバイトテーブルとして取得。asHex()
: 暗号化されたデータを16進形式の文字列として取得。asString()
: 暗号化されたデータを文字列形式で取得。
Decrypt
与えられたメッセージをMORUS暗号を使用して復号化します。
- パラメータ:
key
(string): 暗号化キー(16または32バイトの文字列)。iv
(string): ノンスまたは初期値(16バイトの文字列)。cipher
(string): 暗号化されたメッセージ(可変長の文字列)。adLen
(number) optional: 追加データの長さ(可変長の文字列)。デフォルトは0。
- 戻り値: 異なる形式で復号化されたデータを取得するための関数を含むテーブル。
asBytes()
: 復号化されたデータをバイトテーブルとして取得。asHex()
: 復号化されたデータを16進形式の文字列として取得。asString()
: 復号化されたデータを文字列形式で取得。
Example:
local m = "ao"
local k = "super_secret_shh"
local iv = "0000000000000000"
local ad= ""
local e = crypto.cipher.morus.encrypt(k, iv, m, ad)
local d = crypto.cipher.morus.decrypt(k, iv, e.asString(), #ad) -- ao
e.asHex() -- 514ed31473d8fb0b76c6cbb17af35ed01d0a
NORX Cipher
NORXは、関連データ付きの認証暗号化スキームで、現在進行中のCAESARコンペティションの第3フェーズにおいて、他の14のプリミティブと共に選ばれました。これは、スポンジ構造に基づいており、効率的で多用途な実装を可能にするシンプルな置換に依存しています。
Encrypt
与えられたメッセージをNORX暗号を使用して暗号化します。
- パラメータ:
key
(string): 暗号化キー(32バイトの文字列)。nonce
(string): ノンスまたは初期値(32バイトの文字列)。plain
(string): 暗号化するメッセージ(可変長の文字列)。header
(string) optional: 追加データ(可変長の文字列)。デフォルトは""。trailer
(string) optional: 追加データ(可変長の文字列)。デフォルトは""。
- 戻り値: 異なる形式で暗号化されたデータを取得するための関数を含むテーブル。
asBytes()
: 暗号化されたデータをバイトテーブルとして取得。asHex()
: 暗号化されたデータを16進形式の文字列として取得。asString()
: 暗号化されたデータを文字列形式で取得。
Decrypt
与えられたメッセージをNORX暗号を使用して復号化します。
- パラメータ:
key
(string): 暗号化キー(32バイトの文字列)。nonce
(string): ノンスまたは初期値(32バイトの文字列)。crypted
(string): 暗号化されたメッセージ(可変長の文字列)。header
(string) optional: 追加データ(可変長の文字列)。デフォルトは""。trailer
(string) optional: 追加データ(可変長の文字列)。デフォルトは""。
- 戻り値: 異なる形式で復号化されたデータを取得するための関数を含むテーブル。
asBytes()
: 復号化されたデータをバイトテーブルとして取得。asHex()
: 復号化されたデータを16進形式の文字列として取得。asString()
: 復号化されたデータを文字列形式で取得。
Example:
local key = "super_duper_secret_password_shhh"
local nonce = "00000000000000000000000000000000"
local data = "ao"
-- Header and trailer are optional
local header, trailer = data, data
local encrypted = crypto.cipher.norx.encrypt(key, nonce, data, header, trailer).asString()
local decrypted = crypto.cipher.norx.decrypt(key, nonce, encrypted, header, trailer) -- ao
local authTag = encrypted:sub(#encrypted-32+1)
crypto.utils.hex.stringToHex(encrypted) -- 0bb35a06938e6541eccd4440adb7b46118535f60b09b4adf378807a53df19fc4ea28
crypto.utils.hex.stringToHex(authTag) -- 5a06938e6541eccd4440adb7b46118535f60b09b4adf378807a53df19fc4ea28
Random Number Generators
The module contains a random number generator using ISAAC which is a cryptographically secure pseudo-random number generator (CSPRNG) and stream cipher.
- Parameters:
min
(number) optional: The minimum value of the random number. defaults to 0.max
(number) optional: The maximum value of the random number. defaults to 2^31 - 1.seed
(string) optional: The seed to be used for generating the random number. defaults to math.random(0,2^32 - 1).
- Returns: A random number between the given range.
Example:
crypto.random.(0, 100, "seed") -- 42
MACs
HMAC
ハッシュベースのメッセージ認証コード(HMAC)は、暗号学的ハッシュ関数を使用したメッセージ認証のメカニズムです。HMACは、秘密の共有キーと組み合わせて、MD5やSHA-1などの任意の反復暗号ハッシュ関数とともに使用できます。
このモジュールは、HMACインスタンスを作成するために使用されるcreateHmac
という関数を公開しています。
- パラメータ:
data
(Stream): ハッシュ化されるデータ。key
(Array): ハッシュ化に使用されるキー。algorithm
(string) optional: ハッシュ化に使用されるアルゴリズム。デフォルトは"sha256"。利用可能なアルゴリズムは"sha1"、"sha256"です。デフォルトは"sha1"。
- 戻り値: 異なる形式でHMACを取得するための関数を含むテーブル。
asBytes()
: HMACをバイトテーブルとして取得します。asHex()
: HMACを16進数形式の文字列として取得します。asString()
: HMACを文字列形式として取得します。
Example:
local data = crypto.utils.stream.fromString("ao")
local key = crypto.utils.array.fromString("super_secret_key")
crypto.mac.createHmac(data, key).asHex() -- 3966f45acb53f7a1a493bae15afecb1a204fa32d
crypto.mac.createHmac(data, key, "sha256").asHex() -- 542da02a324155d688c7689669ff94c6a5f906892aa8eccd7284f210ac66e2a7
KDFs
PBKDF2
パスワードベースのキー導出関数2(PBKDF2)は、ハッシュベースのメッセージ認証コード(HMAC)などの疑似乱数関数を入力パスワードまたはパスフレーズに適用し、ソルト値とともに多くの回数繰り返すことで、派生キーを生成します。この派生キーは、後続の操作で暗号化キーとして使用できます。
- パラメータ:
password
(Array): キーを導出するためのパスワード。salt
(Array): 使用するソルト。iterations
(number): 実行する繰り返し回数。keyLen
(number): 導出するキーの長さ。digest
(string) optional: 使用するダイジェストアルゴリズム。デフォルトは"sha1"。利用可能なアルゴリズムは"sha1"、"sha256"です。
- 戻り値: 異なる形式で導出されたキーを取得するための関数を含むテーブル。
asBytes()
: 導出されたキーをバイトテーブルとして取得します。asHex()
: 導出されたキーを16進数形式の文字列として取得します。asString()
: 導出されたキーを文字列形式として取得します。
Example:
local salt = crypto.utils.array.fromString("salt")
local password = crypto.utils.array.fromString("password")
local iterations = 4
local keyLen = 16
local res = crypto.kdf.pbkdf2(password, salt, iterations, keyLen).asHex() -- C4C21BF2BBF61541408EC2A49C89B9C6
ユーティリティ
配列
Example Usage:
local arr = crypto.utils.array
arr.fromString("ao") -- Array
arr.toString(arr.fromString("ao")) -- ao
arr.fromHex("616f") -- Array
arr.toHex(arr.fromHex("616f")) -- 616f
arr.concat(arr.fromString("a"), arr.fromString("o")) -- Array
arr.truncate(arr.fromString("ao"), 1) -- Array
arr.XOR(arr.fromString("a"), arr.fromString("o")) -- Array
arr.substitute(arr.fromString("a"), arr.fromString("o")) -- Array
arr.permute(arr.fromString("a"), arr.fromString("o")) -- Array
arr.copy(arr.fromString("ao")) -- Array
arr.slice(arr.fromString("ao"), 0, 1) -- Array
size
配列のサイズを返します。
- パラメーター:
arr
(Array): サイズを取得する配列。
- 戻り値: 配列のサイズ。
fromString
文字列から配列を作成します。
- パラメーター:
str
(string): 配列を作成するための文字列。
- 戻り値: 文字列から作成された配列。
toString
配列を文字列に変換します。
- パラメーター:
arr
(Array): 文字列に変換する配列。
- 戻り値: 配列を文字列として返します。
fromStream
ストリームから配列を作成します。
- パラメーター:
stream
(Stream): 配列を作成するためのストリーム。
- 戻り値: ストリームから作成された配列。
readFromQueue
キューからデータを読み取り、配列に格納します。
- パラメーター:
queue
(Queue): データを読み取るキュー。size
(number): 読み取るデータのサイズ。
- 戻り値: キューから読み取ったデータを含む配列。
writeToQueue
配列からキューにデータを書き込みます。
- パラメーター:
queue
(Queue): データを書き込むキュー。array
(Array): データを読み取る配列。
- 戻り値: なし
toStream
配列をストリームに変換します。
- パラメーター:
arr
(Array): ストリームに変換する配列。
- 戻り値: 配列をストリームとして返します。
fromHex
16進数文字列から配列を作成します。
- パラメーター:
hex
(string): 配列を作成するための16進数文字列。
- 戻り値: 16進数文字列から作成された配列。
toHex
配列を16進数文字列に変換します。
- パラメーター:
arr
(Array): 16進数文字列に変換する配列。
- 戻り値: 配列を16進数文字列として返します。
concat
2つの配列を連結します。
- パラメーター:
a
(Array): 連結する配列。b
(Array): 連結される配列。
- 戻り値: 連結された配列。
truncate
指定された長さに配列を切り詰めます。
- パラメーター:
a
(Array): 切り詰める配列。newSize
(number): 配列の新しいサイズ。
- 戻り値: 切り詰められた配列。
XOR
2つの配列に対してビット単位のXOR操作を実行します。
- パラメーター:
a
(Array): 最初の配列。b
(Array): 2番目の配列。
- 戻り値: XOR操作の結果。
substitute
最初の配列のキーと2番目の配列の値を持つ新しい配列を作成します。
- パラメーター:
input
(Array): 置き換える配列。sbox
(Array): 置き換えるための配列。
- 戻り値: 置き換えられた配列。
permute
2番目の配列のキーと最初の配列の値を持つ新しい配列を作成します。
- パラメーター:
input
(Array): 並べ替える配列。pbox
(Array): 並べ替えるための配列。
- 戻り値: 並べ替えられた配列。
copy
配列のコピーを作成します。
- パラメーター:
input
(Array): コピーする配列。
- 戻り値: コピーされた配列。
slice
配列のスライスを作成します。
- パラメーター:
input
(Array): スライスする配列。start
(number): スライスの開始インデックス。stop
(number): スライスの終了インデックス。
- 戻り値: スライスされた配列。
ストリーム
ストリームはバイトのシーケンスを表すデータ構造です。データをストリーミング方式で格納および操作するために使用されます。
Example Usage:
local stream = crypto.utils.stream
local str = "ao"
local arr = {97, 111}
stream.fromString(str) -- Stream
stream.toString(stream.fromString(str)) -- ao
stream.fromArray(arr) -- Stream
stream.toArray(stream.fromArray(arr)) -- {97, 111}
stream.fromHex("616f") -- Stream
stream.toHex(stream.fromHex("616f")) -- 616f
fromString
文字列からストリームを作成します。
- パラメーター:
str
(string): ストリームを作成するための文字列。
- 戻り値: 文字列から作成されたストリーム。
toString
ストリームを文字列に変換します。
- パラメーター:
stream
(Stream): 文字列に変換するストリーム。
- 戻り値: ストリームを文字列として返します。
fromArray
配列からストリームを作成します。
- パラメーター:
arr
(Array): ストリームを作成するための配列。
- 戻り値: 配列から作成されたストリーム。
toArray
ストリームを配列に変換します。
- パラメーター:
stream
(Stream): 配列に変換するストリーム。
- 戻り値: ストリームを配列として返します。
fromHex
16進数文字列からストリームを作成します。
- パラメーター:
hex
(string): ストリームを作成するための16進数文字列。
- 戻り値: 16進数文字列から作成されたストリーム。
toHex
ストリームを16進数文字列に変換します。
- パラメーター:
stream
(Stream): 16進数文字列に変換するストリーム。
- 戻り値: ストリームを16進数文字列として返します。
Hex
Example Usage:
local hex = crypto.utils.hex
hex.hexToString("616f") -- ao
hex.stringToHex("ao") -- 616f
hexToString
16進数文字列を文字列に変換します。
- パラメーター:
hex
(string): 文字列に変換するための16進数文字列。
- 戻り値: 16進数文字列を文字列として返します。
stringToHex
文字列を16進数文字列に変換します。
- パラメーター:
str
(string): 16進数文字列に変換するための文字列。
- 戻り値: 文字列を16進数文字列として返します。
Queue
キューは、要素のシーケンスを表すデータ構造です。最初に入れたものが最初に出る(FIFO)方式でデータを保存および操作するために使用されます。
Example Usage:
local q = crypto.utils.queue()
q.push(1)
q.push(2)
q.pop() -- 1
q.size() -- 1
q.getHead() -- 2
q.getTail() -- 2
q.reset()
push
キューに要素を追加します。
- パラメーター:
queue
(Queue): 要素を追加するキュー。element
(any): キューに追加する要素。
- 戻り値: なし
pop
キューから要素を取り出します。
- パラメーター:
queue
(Queue): 要素を取り出すキュー。element
(any): キューから取り出す要素。
- 戻り値: 取り出された要素。
size
キューのサイズを返します。
- パラメーター: なし
- 戻り値: キューのサイズ。
getHead
キューの先頭要素を返します。
- パラメーター: なし
- 戻り値: キューの先頭要素。
getTail
キューの末尾要素を返します。
- パラメーター: なし
- 戻り値: キューの末尾要素。
reset
キューをリセットします。
- パラメーター: なし